Skip to content

docs: prune and de-drift deployment and production docs - #605

Merged
mfw78 merged 3 commits into
dev/m1from
docs/598-deploy-production
Jul 25, 2026
Merged

docs: prune and de-drift deployment and production docs#605
mfw78 merged 3 commits into
dev/m1from
docs/598-deploy-production

Conversation

@mfw78

@mfw78 mfw78 commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

What

Prune and de-drift the deployment and production documentation set (README, docs/deployment.md, docs/production.md, docs/deployment/docker.md, docs/deployment/multi-chain.md, docs/06-production-hardening.md), cutting it from ~2020 to ~710 lines.

Fix ownership so each topic has one owner: docs/deployment.md owns the engine.toml reference, module artefact builds, and local runs; docs/production.md owns the production deploy procedure (systemd, backup, observability wiring); docs/deployment/docker.md owns containers; docs/deployment/multi-chain.md owns multi-chain config; docs/06-production-hardening.md owns the hardening design facts and stops restating deploy steps. The others link the owner by name instead of duplicating config, metric, and procedure tables.

Why

The docs had drifted off the current dev/m1 architecture and were thick with planning prose, aspirational 0.3/M-number scheduling, and fabricated interfaces. Verified against the code in this tree and corrected:

  • Production binary is shepherd (registers the venue platform and the Prometheus add-on), not nexum / -p nexum-cli; the bare nexum binds no metrics exporter and cannot load the cow adapter.
  • Resource caps live under [limits] (and [limits.http|chain|logs|poison|dispatch]), not [engine.limits]; defaults confirmed (fuel 1e9, event_deadline_secs 120, memory 64 MiB, state 50 MiB).
  • The redb file is local-store.redb (was variously ls.redb / state.redb).
  • Metric prefix is shepherd_* with the eleven metrics the runtime actually emits; dropped the fabricated nexum_* table and the non-existent shepherd_cow_api_submit_total / shepherd_fuel_consumed / shepherd_memory_peak_bytes / shepherd_module_uptime_seconds.
  • Order submission is the videre:venue adapter contract: the orderbook URL override is the cow-venue adapter's own module.toml [config] orderbook-url, not an engine-side [extensions.cow.orderbook_urls] / cow-api backend (which no longer exists). Adapters are wired via [[adapters]].
  • Poison threshold is 5 failures / 600s ([limits.poison]), not 10; restart backoff caps at 300s.
  • Removed fabricated CLI subcommands (nexum module list/restart/reload, nexum state purge/compact, nexum health), the --check-integrity-only / --log-format json flags, the epoch-interruption mechanism (the real backstop is a per-dispatch tokio timeout), and the :8080/health future-direction endpoint.
  • Purged em dashes and stale bleu/nullis-shepherd repo/image names (CI publishes ghcr.io/nullislabs/shepherd).

Testing

Documentation-only, pure Markdown: no build. Confirmed no internal links point at a deleted or renamed file (none were deleted or renamed), zero em dashes remain, and every config key, default, metric name, port, and binary name was checked against dev/m1 source.

AI Assistance

Documentation-only sweep; verified against dev/m1 source, no build run (Markdown only).

Deviations flagged

  • docker-compose.yml (outside this doc set's edit scope): the default image ghcr.io/bleu/nullis-shepherd:latest does not match the CI-published ghcr.io/nullislabs/shepherd (the workflow uses ${{ github.repository }}), so a fresh docker compose pull fetches a stale or absent image. The docs now document the correct name; the compose default still needs a fix.
  • docs/deployment/multi-chain.md: the prior revision documented a require_ws = false chain key and claimed the engine logs a boot-time ERROR for an HTTP RPC URL under a subscription. Neither exists: ChainConfig (engine_config.rs) has no such field, and provider_pool.rs opens HTTP transports that poll eth_getBlockByNumber / eth_getLogs with no boot error. Corrected in-doc to state HTTP is fully supported.
  • docs/06-production-hardening.md: the prior revision documented multi-endpoint RPC failover ([[chains.endpoints]] with priority, [chains.rpc_policy], nexum_rpc_fallbacks_total). ChainConfig carries a single rpc_url and ProviderPool does no failover; resilience is a RetryBackoffLayer plus a per-request timeout only. Corrected in-doc to the single-endpoint model.

Part of #598.

Trim the deployment and production corpus to the current contract and fix ownership: docs/deployment.md owns the engine.toml reference, module artefact builds, and local runs; docs/production.md owns the production deploy (systemd, backup, observability wiring); docs/deployment/docker.md owns containers; docs/deployment/multi-chain.md owns multi-chain config; docs/06-production-hardening.md owns the hardening design facts and stops restating deploy steps. Each of the others links the owner rather than repeating.

Verify every config key, default, metric name, port, and binary against the code on dev/m1: the production binary is shepherd (not nexum-cli), resource caps live under [limits] (not [engine.limits]), the redb file is local-store.redb, the metric prefix is shepherd_* with the eleven-metric surface the runtime actually emits, and the orderbook URL override is the cow-venue adapter's own [config] orderbook-url rather than an engine-side extensions.cow table. Drop the fabricated cli subcommands, epoch mechanism, health endpoint, and nexum_* metric table. Purge em dashes and repo-name and planning drift.
@mfw78
mfw78 force-pushed the docs/598-deploy-production branch from 53fd04f to 1fdb681 Compare July 25, 2026 03:18
mfw78 added 2 commits July 25, 2026 03:30
Hard-wrapped prose churns diffs: a one-word edit reflows the whole paragraph. Join each paragraph onto a single logical line and let it soft-wrap. Content unchanged (word and heading counts preserved); code fences, tables, lists, blockquotes and headings untouched.
@mfw78
mfw78 merged commit 15bd93b into dev/m1 Jul 25, 2026
7 checks passed
@mfw78
mfw78 deleted the docs/598-deploy-production branch July 25, 2026 06:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant